﻿using System;
using System.Data.Objects;
namespace WINADM.Data
{
    public interface IEntityRepository
    {
        IObjectSet<Computer> Computers { get; }
        IObjectSet<DNSServer> DNSServers { get; }
        IObjectSet<NetworkInterface> NetworkInterfaces { get; }
        IObjectSet<Service> Services { get; }
        IObjectSet<ServiceStartMode> ServiceStartModes { get; }
        IObjectSet<DependentService> DependentServices { get; }
        IObjectSet<WINSServer> WINSServers { get; }
        IObjectSet<Application> Applications { get; }
        ObjectResult<EventLog> GetLatestEventLogEntry();
        void DeleteServices(Nullable<int> computerId);
        void DeleteProcesses(Nullable<int> computerId);
        void AddRAMUsageEntry(Nullable<int> computerId, Nullable<System.DateTime> time, Nullable<int> value);
        void AddEventLogEntry(Nullable<int> computerId, string logFile, Nullable<int> recordNumber, string category, Nullable<int> eventIdentifier, Nullable<byte> eventTypeId, string message, string sourceName, Nullable<System.DateTime> timeGenerated, Nullable<System.DateTime> timeWritten, string user);
        void AddCPUUsageEntry(Nullable<int> computerId, Nullable<System.DateTime> time, Nullable<byte> value);
        int SaveChanges();
        void AcceptAllChanges();
        void Refresh(RefreshMode refreshMode, object entity);
        void AddServiceEntry(Nullable<bool> canPauseAndContinue, Nullable<bool> canStop, string displayName, string description, string serviceName, Nullable<short> typeId, Nullable<byte> statusId, Nullable<int> computerId, Nullable<byte> startModeId, Nullable<bool> desktopInteraction, Nullable<System.DateTime> installDate, string pathName, Nullable<int> processId, string serviceAccountName);
        void AddDependentServiceEntry(Nullable<int> computerId, string serviceName, string dependentServiceName);
        void AddProcessEntry(Nullable<int> computerId, Nullable<int> processId, string caption, string description, string commandLine, string executablePath, string name, Nullable<int> parentProcessId, Nullable<long> kernelModeTime, Nullable<int> pageFileUsage, Nullable<int> priority, Nullable<int> threadCount, Nullable<long> privatePageCount, Nullable<long> userModeTime, Nullable<long> virtualSize, Nullable<System.DateTime> creationDate);
        void DeleteComputer(string computerName);
    }
}
